package modele.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import data.Produit;
import data.Succursale;

public class DaoProduit extends DAO<Produit>{

	@Override
	public Produit find(int id) {
		String sql = "SELECT * FROM produit WHERE idProduit = ?";
		Produit p = null;
		PreparedStatement requete;
		try {
			
			requete = prepareStatement(sql);			
			requete.setInt(1, id);	

			ResultSet result = requete.executeQuery();	

			if(result != null && result.next()) {
				p= new Produit();
				p.setNom(result.getString("NOM"));				
				p.setDescription(result.getString("description"));
				p.setNoProduit(result.getString("NO_PRODUIT"));
				p.setPrix(result.getFloat("PRIX"));
				//TODO:loader l'image
				//p.setImage(result.getString("IMAGE"));
				p.setIdDetaillant(result.getInt("DETAILLANT_idDETAILLANT"));
				p.setIdProduit(result.getInt("idPRODUIT"));
			}

			requete.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return p;
	}
	
	public ArrayList<Produit> findFromDet(int idDet) {
		String sql = "SELECT * FROM produit WHERE DETAILLANT_idDETAILLANT = ?";
		ArrayList<Produit> produits = new ArrayList<Produit>();
		PreparedStatement requete;
		try {
			requete = prepareStatement(sql);			
			requete.setInt(1, idDet);	

			ResultSet result = requete.executeQuery();	

			while(result != null && result.next()) {
				Produit p;
				p= new Produit();
				p.setNom(result.getString("NOM"));				
				p.setDescription(result.getString("description"));
				p.setNoProduit(result.getString("NO_PRODUIT"));
				p.setPrix(result.getFloat("PRIX"));
				//TODO:loader l'image
				//p.setImage(result.getString("IMAGE"));
				p.setIdDetaillant(result.getInt("DETAILLANT_idDETAILLANT"));
				p.setIdProduit(result.getInt("idPRODUIT"));
					
				produits.add(p);
			}

			requete.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return produits;
	}

	@Override
	public void create(Produit p) {
		String sql = "INSERT INTO produit (idPRODUIT,DETAILLANT_idDETAILLANT,NO_PRODUIT,NOM,DESCRIPTION,IMAGE,Prix) VALUES (?,?,?,?,?,?,?)";
		PreparedStatement requete;
		try {

			//PreparedStatement prest = ConnectionManager.getConnection().prepareStatement(sql);
			requete = prepareStatement(sql);			
			requete.setInt(1, p.getIdProduit());	
			requete.setInt(2, p.getIdDetaillant());	
			requete.setString(3, p.getNoProduit());
			requete.setString(4, p.getNom());
			requete.setString(5, p.getDescription());
			//TODO: gestion des images
			//requete.setString(6, p.getImage());
			requete.setFloat(7, p.getPrix());
			
			requete.execute();

			requete.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void update(Produit p) {
		String sql = "update produit set NO_PRODUIT=?,NOM=?,DESCRIPTION=?,IMAGE=?,Prix=? where idProduit=?";
		PreparedStatement requete;
		try {

			//PreparedStatement prest = ConnectionManager.getConnection().prepareStatement(sql);
			requete = prepareStatement(sql);
			
			requete.setString(1, p.getNoProduit());
			requete.setString(2, p.getNom());
			requete.setString(3, p.getDescription());
			//TODO: gestion des images
			//requete.setString(4, p.getImage());
			requete.setFloat(5, p.getPrix());
			requete.setInt(6, p.getIdProduit());	
			
			requete.execute();

			requete.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void delete(Produit p) {
		String sql = "Delete from produit where idProduit = ?";
		PreparedStatement requete;
		try {			
			requete = prepareStatement(sql);			
			requete.setInt(1, p.getIdProduit());
			requete.execute();
			requete.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

}
